home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d12 / asmbler.arc / ANSI.ASM next >
Assembly Source File  |  1988-11-19  |  17KB  |  739 lines

  1.  
  2. COM41A  EQU     041AH
  3. COM41C  EQU     041CH
  4.  
  5. DEVICEHEADER    STRUC
  6.         NDEVICE DD      -1              ; 0
  7.         ATTRIB  DW      0               ; 4
  8.         STRAG   DW      0               ; 6
  9.         INTER   DW      0               ; 8
  10.         NAME    DB      '        '      ; 10
  11. DEVICEHEADER    ENDS                    ; 18
  12.  
  13. REQUESTHEADER   STRUC
  14.         LENGTH  DB
  15.         UNITCOD DB
  16.         COMMCOD DB
  17.         STATUS  DW
  18.         RESERVE DB      8 DUP (0)
  19. REQUESTHEADER   ENDS
  20.  
  21. INITREQUEST     STRUC
  22.         DUMINIT DB      SIZE REQUESTHEADER DUP (0)
  23.         NUMUNIT DB
  24.         DEVEND  DD
  25.         DEVBPB  DD
  26. INITREQUEST     ENDS
  27.  
  28. IOREQUEST       STRUC
  29.         DUMIO   DB      SIZE REQUESTHEADER DUP (0)
  30.         MEDIA   DB
  31.         DATAADR DD
  32.         COUNT   DW
  33.         START   DW
  34. IOREQUEST       ENDS
  35.  
  36. NDIREQUEST      STRUC
  37.         DUMNDI  DB      SIZE REQUESTHEADER DUP (0)        
  38.         DATAOUT DB
  39. NDIREQUEST      ENDS
  40.  
  41. TABLE   STRUC
  42.         DBYTE   DB
  43.         ADDR    DW
  44. TABLE   ENDS
  45.  
  46. ANSIDRIVER      SEGMENT PUBLIC PARA 'CODE'
  47. ASSUME  CS:ANSIDRIVER,DS:ANSIDRIVER
  48.  
  49. ANSIDEV DEVICEHEADER <,8013H,QUEUECALL,EXECUCALL,'CON     '>
  50.  
  51. COMMTBL DW      INITPROC        ; 0012 0609     0
  52.         DW      BADCOMMAND      ; 0014 00DE     1
  53.         DW      BADCOMMAND      ; 0016 00DE     2
  54.         DW      IOCTLINPUT      ; 0018 00D8     3
  55.         DW      INPUTPROC       ; 001A 01F6     4
  56.         DW      NDINPUTPROC     ; 001C 0278     5
  57.         DW      BADCOMMAND      ; 001E 00DE     6
  58.         DW      IFLUSHPROC      ; 0020 02BC     7
  59.         DW      OUTPUTPROC      ; 0022 02D8     8
  60.         DW      OUTPUTPROC      ; 0024 02D8     9
  61.         DW      BADCOMMAND      ; 0026 00DE     10
  62.         DW      BADCOMMAND      ; 0028 00DE     11
  63.  
  64.         ; 2A
  65.         TABLE   <041H,DUMMY93>
  66.         TABLE   <042H,DUMMY87>
  67.         TABLE   <043H,DUMMY84>
  68.         TABLE   <044H,DUMMY85>
  69.         TABLE   <048H,DUMMY83>
  70.         TABLE   <04AH,DUMMY91>
  71.         TABLE   <04BH,DUMMY92>
  72.         TABLE   <052H,DUMMY38>
  73.         TABLE   <066H,DUMMY83>
  74.         TABLE   <068H,DUMMY97>
  75. L49     TABLE   <06CH,DUMMY96>
  76.         TABLE   <06DH,DUMMY90>
  77. L4E     TABLE   <06EH,DUMMY94>
  78.         TABLE   <070H,DUMMY99>
  79.         TABLE   <073H,DUMMY95>
  80.         TABLE   <075H,DUMMY89>
  81.  
  82.         DB      000H,000H,000H
  83.         DB      007H,001H,0FFH
  84.         DB      008H,004H
  85. L62     DB      0F8H
  86.         ; 63
  87.         DB      001H,005H,0FFH,080H,007H
  88.         DB      0F8H,070H,008H,088H,000H,01EH,0F8H,000H
  89.         ; 70
  90.         DB      01FH,0F8H,004H,020H,0F8H,002H,021H,0F8H
  91.         DB      006H,022H,0F8H,001H,023H,0F8H,005H,024H
  92.         ; 80
  93.         DB      0F8H,003H,025H,0F8H,007H,028H,08FH,000H
  94.         DB      029H,08FH,040H,02AH,08FH,020H,02BH,08FH
  95.         ; 90
  96.         DB      060H,02CH,08FH,010H,02DH,08FH,050H,02EH
  97.         DB      08FH,030H,02FH,08FH,070H,0FFH
  98.  
  99. REQADDR DD      0       ; 009E,00A0
  100.  
  101. QUEUECALL       PROC FAR
  102.         MOV     CS:WORD PTR REQADDR,BX
  103.         MOV     CS:WORD PTR REQADDR[2],ES
  104.         RET
  105. QUEUECALL       ENDP
  106.  
  107. EXECUCALL       PROC    FAR
  108.         PUSH    SI
  109.         PUSH    AX
  110.         PUSH    CX
  111.         PUSH    DX
  112.         PUSH    DI
  113.         PUSH    BP
  114.         PUSH    DS
  115.         PUSH    ES
  116.         PUSH    BX
  117.         LDS     BX,CS:REQADDR
  118.         MOV     CX,[BX].COUNT
  119.         MOV     AL,[BX].COMMCOD
  120.         CBW
  121.         MOV     SI,OFFSET COMMTBL       ; 0012
  122.         ADD     SI,AX
  123.         ADD     SI,AX
  124.         CMP     AL,0BH
  125.         JA      IOCTLINPUT
  126.         LES     DI,[BX].DATAADR
  127.         PUSH    CS
  128.         POP     DS
  129.         JMP     WORD PTR [SI]
  130. DUMMY14:
  131.         MOV     AH,03H
  132.         JMP     SHORT RETURN
  133. IOCTLINPUT:
  134.         MOV     AL,03H
  135.         MOV     AH,81H
  136.         JMP     SHORT RETURN
  137. BADCOMMAND:
  138.         MOV     AH,01H
  139. RETURN:
  140.         LDS     BX,CS:REQADDR
  141.         MOV     [BX].STATUS,AX
  142.         POP     BX
  143.         POP     ES
  144.         POP     DS
  145.         POP     BP
  146.         POP     DI
  147.         POP     DX
  148.         POP     CX
  149.         POP     AX
  150.         POP     SI
  151.         RET
  152. EXECUCALL       ENDP
  153.  
  154. KEYBREAK:
  155.         MOV     CS:L114,03H
  156.         IRET
  157.  
  158. LFA     DB      0H
  159. LFB     DW      4H
  160. LFD     DW      DUMMY18
  161. LFF     DB      3H
  162. MAXCOL  DB      4FH
  163. COL     DB      0H
  164. ROW     DB      0H
  165. L103    DW      0H
  166. L105    DB      0H
  167. L106    DW      0H
  168. L108    DB      0H
  169. L109    DW      KBDTABLE
  170. L10B    DB      1BH,5BH
  171. L10D    DW      3030H
  172.         DB      3BH
  173. L110    DW      3030H
  174.         DB      52H,0DH
  175. L114    DB      0H
  176. FGNDCLR DB      7H
  177. DPAGE   DB      0H
  178. VIDEOB  DW      0B800H
  179. L119    DW      0H
  180.  
  181. DUMMY56:
  182.         CMP     AL,0DH
  183.         JNZ     NOCR
  184.         MOV     COL,00H
  185.         JMP     SHORT CONT
  186. NOCR:
  187.         CMP     AL,0AH
  188.         JZ      DOLF
  189.         CMP     AL,07H
  190.         JNZ     NOBEL
  191. OUTCHR: MOV     BX,WORD PTR FGNDCLR
  192.         AND     BL,07H
  193.         MOV     AH,0EH
  194.         INT     10H
  195. GORET:  RET
  196.  
  197. NOBEL:  CMP     AL,08H
  198.         JNZ     NOBS
  199.         CMP     COL,00H
  200.         JZ      GORET
  201.         DEC     COL
  202.         JMP     SHORT CONT
  203. NOBS:   MOV     BX,WORD PTR FGNDCLR
  204.         MOV     CX,1H
  205.         MOV     AH,09H
  206.         INT     10H
  207.         INC     COL
  208.         MOV     AL,COL
  209.         CMP     AL,MAXCOL
  210.         JBE     CONT
  211.         CMP     LFA,00H
  212.         JZ      CLRROW
  213.         DEC     COL
  214.         RET
  215. CLRROW: MOV     COL,00H
  216. DOLF:   INC     ROW
  217.         CMP     ROW,19H
  218.         JB      CONT
  219.         MOV     ROW,18H
  220.         CALL    DUMMY50
  221. CONT:   MOV     DH,ROW
  222.         MOV     DL,COL
  223.         MOV     BH,DPAGE
  224.         MOV     AH,02H
  225.         INT     10H
  226.         RET
  227.  
  228. DUMMY50:
  229.         MOV     AL,LFF
  230.         CMP     AL,02H
  231.         JE      NOAUTO
  232.         CMP     AL,03H
  233.         JE      NOAUTO
  234.         MOV     AL,0AH
  235.         JMP     OUTCHR
  236. NOAUTO:
  237.         MOV     BH,FGNDCLR
  238.         MOV     BL,20H
  239.         MOV     BP,50H
  240.         MOV     AX,VIDEOB
  241.         ADD     AX,L119
  242.         MOV     ES,AX
  243.         MOV     DS,AX
  244.         XOR     DI,DI
  245.         MOV     SI,0A0H
  246.         MOV     CX,780H
  247.         CLD
  248.         CMP     CS:VIDEOB,0B800H
  249.         JZ      WAITCOLOR
  250.         REP     MOVSW
  251.         MOV     AX,BX
  252.         MOV     CX,BP
  253.         REP     STOSW
  254. GORET1:
  255.         PUSH    CS
  256.         POP     DS
  257.         RET
  258. WAITCOLOR:
  259.         MOV     DX,03DAH
  260. LP1:    IN      AL,DX
  261.         TEST    AL,08H
  262.         JZ      LP1
  263.         MOV     AL,25H
  264.         MOV     DX,03D8H
  265.         OUT     DX,AL
  266.         REP     MOVSW
  267.         MOV     AX,BX
  268.         MOV     CX,BP
  269.         REP     STOSW
  270.         MOV     AL,29H
  271.         MOV     DX,03D8H
  272.         OUT     DX,AL
  273.         JMP     GORET1
  274. INPUTPROC:
  275.         JCXZ    NOCHARS
  276. LP3:    PUSH    CX
  277.         CALL    DUMMY51
  278.         POP     CX
  279.         STOSB
  280.         LOOP    LP3
  281. NOCHARS:
  282.         JMP     BADCOMMAND
  283. DUMMY51:
  284.         XOR     AX,AX
  285.         XCHG    L114,AL
  286.         OR      AL,AL
  287.         JNZ     GORET3
  288. DUMMY4:
  289.         CMP     L108,00H
  290.         JNZ     DUMMY1
  291.         XOR     AH,AH
  292.         INT     16H
  293.         CALL    DUMMY52
  294.         JNZ     DUMMY2
  295.         DEC     CX
  296.         DEC     CX
  297.         INC     BX
  298.         INC     BX
  299.         OR      AL,AL
  300.         JNZ     DUMMY3
  301.         DEC     CX
  302.         INC     BX
  303. DUMMY3:
  304.         MOV     L108,CL
  305.         MOV     L109,BX
  306.         CALL    DUMMY1
  307. DUMMY2:
  308.         OR      AX,AX
  309.         JZ      DUMMY4
  310.         OR      AL,AL
  311.         JNZ     GORET3
  312.         MOV     L114,AH
  313. GORET3: RET
  314. DUMMY1:
  315.         MOV     BX,L109
  316.         MOV     AX,[BX]
  317.         DEC     L108
  318.         INC     BX
  319.         OR      AL,AL
  320.         JNZ     DUMMY5
  321.         INC     BX
  322.         DEC     L108
  323. DUMMY5:
  324.         MOV     L109,BX
  325.         RET
  326. DUMMY52:
  327.         MOV     BX,OFFSET KBDTABLE
  328. DUMMY9:
  329.         MOV     CL,[BX]
  330.         XOR     CH,CH
  331.         OR      CX,CX
  332.         JZ      DUMMY6
  333.         OR      AL,AL
  334.         JNZ     DUMMY7
  335.         CMP     AX,[BX+01]
  336.         JMP     SHORT DUMMY8
  337. DUMMY7:
  338.         CMP     AL,[BX+01]
  339. DUMMY8:
  340.         JZ      GORET4
  341.         ADD     BX,CX
  342.         JMP     DUMMY9
  343. DUMMY6:
  344.         OR      BX,BX
  345. GORET4: RET
  346. NDINPUTPROC:
  347.         MOV     AL,L114
  348.         OR      AL,AL
  349.         JNZ     DUMMY10
  350.         CMP     L108,00H
  351.         JZ      DUMMY11
  352.         MOV     BX,L109
  353.         MOV     AL,[BX]
  354.         JMP     SHORT DUMMY10
  355. DUMMY11:
  356.         MOV     AH,01H
  357.         INT     16H
  358.         JZ      DUMMY12
  359.         OR      AX,AX
  360.         JNZ     DUMMY13
  361.         MOV     AH,00H
  362.         INT     16H
  363.         JMP     NDINPUTPROC
  364. DUMMY13:
  365.         CALL    DUMMY52
  366.         JNZ     DUMMY10
  367.         MOV     AL,[BX+02]
  368.         CMP     BYTE PTR [BX+01],00
  369.         JNZ     DUMMY10
  370.         MOV     AL,[BX+03]
  371. DUMMY10:
  372.         LDS     BX,REQADDR
  373.         MOV     [BX].DATAOUT,AL
  374. DUMMY15:
  375.         JMP     BADCOMMAND
  376. DUMMY12:
  377.         JMP     DUMMY14
  378. IFLUSHPROC:
  379.         MOV     L114,00H
  380.         MOV     L108,00H
  381.         PUSH    DS
  382.         XOR     BP,BP
  383.         MOV     DS,BP
  384.         MOV     BYTE PTR ANSIDEV[COM41A],1EH    ; Bad fake of MASM
  385.         MOV     BYTE PTR ANSIDEV[COM41C],1EH
  386.         POP     DS
  387.         JMP     DUMMY15
  388.  
  389. OUTPUTPROC:
  390.         JCXZ    DUMMY15
  391. LP2:    MOV     AL,ES:[DI]
  392.         INC     DI
  393.         CALL    DUMMY53
  394.         LOOP    LP2
  395.         JMP     DUMMY15
  396. DUMMY74:
  397.         STI
  398.         PUSH    DS
  399.         PUSH    CS
  400.         POP     DS
  401.         CALL    DUMMY53
  402.         POP     DS
  403.         IRET
  404. DUMMY53:
  405.         PUSH    AX
  406.         PUSH    BX
  407.         PUSH    CX
  408.         PUSH    DX
  409.         PUSH    SI
  410.         PUSH    DI
  411.         PUSH    ES
  412.         PUSH    BP
  413.         MOV     VIDEOB,0B800H
  414.         XCHG    SI,AX
  415.         MOV     AX,0040H
  416.         MOV     DS,AX
  417.         MOV     AX,L49.ADDR
  418.         DEC     AH
  419.         MOV     WORD PTR CS:LFF,AX
  420.         CMP     AL,07H
  421.         JNZ     DUMMY16
  422.         MOV     CS:VIDEOB,0B000H
  423. DUMMY16:
  424.         MOV     AL,L62
  425.         MOV     CS:DPAGE,AL
  426.         CBW
  427.         ADD     AX,AX
  428.         MOV     BX,AX
  429.         MOV     AX,[BX+50H]
  430.         MOV     WORD PTR CS:COL,AX
  431.         MOV     AX,WORD PTR L4E
  432.         MOV     CL,04H
  433.         SHR     AX,CL
  434.         PUSH    CS
  435.         POP     DS
  436.         MOV     L119,AX
  437.         XCHG    SI,AX
  438.         CALL    DUMMY54
  439.         POP     BP
  440.         POP     ES
  441.         POP     DI
  442.         POP     SI
  443.         POP     DX
  444.         POP     CX
  445.         POP     BX
  446.         POP     AX
  447.         RET
  448. DUMMY54:
  449.         MOV     SI,OFFSET LFD
  450.         JMP     WORD PTR [SI]
  451. DUMMY72:
  452.         CMP     AL,5BH
  453.         JZ      DUMMY17
  454.         JMP     DUMMY18
  455. DUMMY17:
  456.         MOV     WORD PTR [SI],OFFSET DUMMY70
  457.         XOR     BX,BX
  458.         MOV     WORD PTR L105,BX
  459.         JMP     SHORT DUMMY19
  460. DUMMY70:
  461.         CMP     AL,03BH
  462.         JNZ     DUMMY20
  463. DUMMY25:
  464.         INC     BYTE PTR L106
  465. DUMMY19:
  466.         CALL    DUMMY43
  467.         XOR     AX,AX
  468.         MOV     [BX],AX
  469.         RET
  470. DUMMY20:
  471.         CMP     AL,30H
  472.         JB      DUMMY21
  473.         CMP     AL,39H
  474.         JA      DUMMY21
  475.         CALL    DUMMY43
  476.         SUB     AL,30H
  477.         XCHG    [BX],AL
  478.         MOV     AH,0AH
  479.         MUL     AH
  480.         ADD     [BX],AL
  481.         RET
  482. DUMMY21:
  483.         CMP     AL,3DH
  484.         JZ      GORET5
  485.         CMP     AL,3FH
  486.         JZ      GORET5
  487.         CMP     AL,22H
  488.         JZ      DUMMY22
  489.         CMP     AL,27H
  490.         JNZ     DUMMY23
  491. DUMMY22:
  492.         MOV     WORD PTR [SI],OFFSET DUMMY71
  493.         MOV     L105,AL
  494. GORET5: RET
  495. DUMMY71:
  496.         CMP     AL,L105
  497.         JNZ     DUMMY24
  498.         DEC     BYTE PTR L106
  499.         MOV     WORD PTR [SI],OFFSET DUMMY70
  500.         RET
  501. DUMMY24:
  502.         CALL    DUMMY43
  503.         MOV     [BX],AL
  504.         MOV     WORD PTR [SI],OFFSET DUMMY71
  505.         JMP     DUMMY25
  506. DUMMY23:
  507.         MOV     BX,0027H
  508. DUMMY26:
  509.         ADD     BX,+03
  510.         CMP     BYTE PTR [BX],00H
  511.         JZ      DUMMY27
  512.         CMP     [BX],AL
  513.         JNZ     DUMMY26
  514.         MOV     AX,[BX+01]
  515.         MOV     BX,OFFSET KBDTABLE
  516.         INC     BX
  517.         ADD     BX,LFB
  518.         MOV     DL,[BX]
  519.         XOR     DH,DH
  520.         MOV     CX,DX
  521.         OR      CX,CX
  522.         JNZ     DUMMY88
  523.         INC     CX
  524. DUMMY88:
  525.         JMP     AX
  526. DUMMY18:
  527.         CMP     AL,1BH
  528.         JNZ     DUMMY27
  529.         MOV     WORD PTR [SI],OFFSET DUMMY72
  530.         RET
  531. DUMMY27:
  532.         CALL    DUMMY56
  533. DUMMY29:
  534.         MOV     LFD,OFFSET DUMMY18
  535.         RET
  536. DUMMY32:
  537.         CMP     [BX],AH
  538.         JZ      DUMMY28
  539.         ADD     [BX],AL
  540.         LOOP    DUMMY32
  541. DUMMY28:
  542.         MOV     DX,WORD PTR COL
  543.         XOR     BX,BX
  544.         MOV     AH,02H
  545.         INT     10H
  546.         JMP     DUMMY29
  547. DUMMY83:
  548.         CMP     CL,19H
  549.         JA      DUMMY28
  550.         MOV     AL,MAXCOL
  551.         MOV     CH,[BX+01]
  552.         OR      CH,CH
  553.         JZ      DUMMY30
  554.         DEC     CH
  555. DUMMY30:
  556.         CMP     AL,CH
  557.         JA      DUMMY31
  558.         MOV     CH,AL
  559. DUMMY31:
  560.         XCHG    CL,CH
  561.         DEC     CH
  562.         MOV     WORD PTR COL,CX
  563.         JMP     DUMMY28
  564. DUMMY84:
  565.         MOV     AH,MAXCOL
  566.         MOV     AL,01H
  567. DUMMY33:
  568.         MOV     BX,OFFSET COL
  569.         JMP     DUMMY32
  570. DUMMY85:
  571.         MOV     AX,OFFSET LFF
  572.         JMP     DUMMY33
  573. DUMMY93:
  574.         MOV     AX,OFFSET LFF
  575. DUMMY34:
  576.         MOV     BX,OFFSET ROW
  577.         JMP     DUMMY32
  578. DUMMY87:
  579.         MOV     AX,1801H
  580.         JMP     DUMMY34
  581. DUMMY95:
  582.         MOV     AX,WORD PTR COL
  583.         MOV     L103,AX
  584.         JMP     DUMMY28
  585. DUMMY89:
  586.         MOV     AX,L103
  587.         MOV     WORD PTR COL,AX
  588.         JMP     DUMMY28
  589. DUMMY90:
  590.         XOR     CX,CX
  591.         XCHG    L106,CL
  592.         CALL    DUMMY43
  593.         INC     CX
  594. LP4:    MOV     AL,[BX]
  595.         PUSH    BX
  596.         MOV     BX,005BH
  597. DUMMY86:
  598.         MOV     AH,[BX]
  599.         ADD     BX,+03H
  600.         CMP     AH,0FFH
  601.         JZ      DUMMY35
  602.         CMP     AH,AL
  603.         JNZ     DUMMY86
  604.         MOV     AX,[BX-02]
  605.         AND     FGNDCLR,AL
  606.         OR      FGNDCLR,AH
  607. DUMMY35:
  608.         POP     BX
  609.         INC     BX
  610.         LOOP    LP4
  611.         JMP     DUMMY28
  612. DUMMY91:
  613.         XOR     CX,CX
  614.         MOV     WORD PTR COL,CX
  615.         MOV     DH,19H
  616. DUMMY36:
  617.         MOV     DL,MAXCOL
  618.         MOV     BH,FGNDCLR
  619.         MOV     AX,0600H
  620.         INT     10H
  621.         JMP     DUMMY28
  622. DUMMY92:
  623.         MOV     CX,WORD PTR COL
  624.         MOV     DH,CH
  625.         JMP     DUMMY36
  626. DUMMY57:
  627.         MOV     DL,0AH
  628.         INC     AL
  629.         XOR     AH,AH
  630.         DIV     DL
  631.         ADD     AX,3030H
  632.         RET
  633. DUMMY94:
  634.         MOV     AL,ROW
  635.         CALL    DUMMY57
  636.         MOV     L10D,AX
  637.         MOV     AL,COL
  638.         CALL    DUMMY57
  639.         MOV     L110,AX
  640.         MOV     L108,09H
  641.         MOV     L109,OFFSET L10B
  642. DUMMY38:
  643.         JMP     DUMMY29
  644. DUMMY96:
  645.         MOV     CL,01H
  646.         JMP     SHORT DUMMY37
  647. DUMMY97:
  648.         XOR     CX,CX
  649. DUMMY37:
  650.         MOV     AL,DL
  651.         CMP     AL,07H
  652.         JA      DUMMY38
  653.         JB      DUMMY39
  654.         MOV     LFA,CL
  655.         RET
  656. DUMMY39:
  657.         MOV     AH,00H
  658.         INT     10H
  659.         JMP     DUMMY38
  660. DUMMY99:
  661.         XOR     DX,DX
  662.         XCHG    L106,DL
  663.         INC     DX
  664.         INC     DX
  665.         CALL    DUMMY43
  666.         MOV     AX,[BX]
  667.         CALL    DUMMY52
  668.         JNZ     DUMMY40
  669.         MOV     DI,BX
  670.         SUB     LFB,CX
  671.         MOV     SI,DI
  672.         ADD     SI,CX
  673.         MOV     CX,OFFSET INITPROC
  674.         SUB     CX,SI
  675.         CLD
  676.         PUSH    ES
  677.         PUSH    CS
  678.         POP     ES
  679.         REP     MOVSB
  680.         POP     ES
  681. DUMMY40:
  682.         CALL    DUMMY43
  683.         CMP     DL,03H
  684.         JB      DUMMY41
  685.         MOV     [BX-01],DL
  686.         ADD     LFB,DX
  687.         ADD     BX,DX
  688. DUMMY41:
  689.         MOV     BYTE PTR [BX-01],00
  690.         MOV     LFD,OFFSET DUMMY18
  691.         RET
  692. DUMMY43:
  693.         MOV     BX,LFB
  694.         INC     BX
  695.         ADD     BX,L106
  696.         CMP     BX,00C8H
  697.         JB      DUMMY42
  698.         DEC     BYTE PTR L106
  699.         JMP     DUMMY43
  700. DUMMY42:
  701.         ADD     BX,OFFSET KBDTABLE
  702.         RET
  703. KBDTABLE:
  704.         ADD     AL,00
  705.         JB      DUMMY44
  706.         DW      8 DUP (0)
  707. DUMMY44:
  708.         DW      90 DUP (0)
  709.  
  710. INITPROC:
  711.         INT     11H
  712.         AND     AL,30H  ; Check type of video card
  713.         CMP     AL,30H
  714.         JNZ     COLORCARD
  715.         MOV     VIDEOB,0B000H
  716. COLORCARD:
  717.         CMP     AL,10H  ; 40 or 80 columns
  718.         JA      D80COLUMNS
  719.         MOV     LFF,00
  720.         MOV     MAXCOL,27H
  721. D80COLUMNS:
  722.         XOR     BX,BX
  723.         MOV     DS,BX
  724.         MOV     BX,4 * 1BH
  725.         MOV     WORD PTR [BX],OFFSET KEYBREAK
  726.         MOV     [BX+02],CS
  727.         MOV     BX,4 * 29H
  728.         MOV     WORD PTR [BX],OFFSET DUMMY74
  729.         MOV     [BX+02],CS
  730.         LDS     BX,CS:REQADDR
  731.         MOV     WORD PTR [BX].DEVEND,OFFSET INITPROC
  732.         MOV     WORD PTR [BX+2].DEVEND,CS
  733.         JMP     BADCOMMAND
  734. ;064D
  735.         DB      51 DUP (0)
  736.  
  737. ANSIDRIVER      ENDS
  738.         END
  739.